package sistema.web.dao.impls;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import sistema.web.dao.IOfertaDAO;
import sistema.web.dtos.OfertaDTO;
import sistema.web.utils.MySQLConnection;

public class OfertaDAO implements IOfertaDAO {

	public boolean registrar(String nombre, String fechaInicio, String fechaCaduca, String ubicacion, String descripcion, int idUsuario) {
		boolean flag = true;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = "INSERT INTO oferta (Nombre, FechaInicio, FechaCaduca, DescripcionHTML, Ubicacion, idUsuarioCreacion, FechaCreacion, Estado) VALUES ('" + nombre + "', '" + fechaInicio + "', '" + fechaCaduca + "', '" + descripcion + "', '" + ubicacion + "', " + idUsuario + ", curdate(), 1)";
			
			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		
		return flag;
	}

	public boolean actualizar(int codigo, String nombre, String fechaInicio, String fechaCaduca, String ubicacion, String descripcion, int idUsuario) {
		boolean flag = true;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = "UPDATE oferta SET Nombre = '" + nombre + "', FechaInicio = " + fechaInicio + ", FechaCaduca = " + fechaCaduca + ", DescripcionHTML = '" + descripcion + "', Ubicacion = '" + ubicacion + "', idUsuarioModificacion = " + idUsuario + ", FechaModificacion = curdate() WHERE idOferta = " + codigo;
			
			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		
		return flag;
	}

	public List<OfertaDTO> listar(String campo, Object valor) {
		List<OfertaDTO> listOferta = null;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = 
				"SELECT " + 
				"   * " +
				"FROM " + 
				"	oferta " +
				"WHERE " +
				"	Estado = 1 " 
			;
			
			if(campo != null && valor != null) {
				if(!campo.equals("idServicio")) {
					query += 
						" AND " +
							campo + " like '%" + valor + "%'"
					;					
				} else {
					query += 
						" AND " +
							campo + " = " + valor
					;					
				}		
			}
			
			PreparedStatement pst = conn.prepareStatement(query);
			ResultSet rs = pst.executeQuery();
			listOferta = new ArrayList<OfertaDTO>();
			while(rs.next()) {
				OfertaDTO dtoOferta = new OfertaDTO();
				
				dtoOferta.setIdOferta(rs.getInt("idOferta"));
				dtoOferta.setNombre(rs.getString("Nombre"));
				dtoOferta.setFechaInicio(rs.getString("FechaInicio"));
				dtoOferta.setFechaCaduca(rs.getString("FechaCaduca"));
				dtoOferta.setDescripcionHTML(rs.getString("DescripcionHTML"));
				dtoOferta.setUbicacion(rs.getString("Ubicacion"));
				
				dtoOferta.setIdUsuarioCreacion(rs.getInt("idUsuarioCreacion"));
				dtoOferta.setFechaCreacion(rs.getDate("FechaCreacion"));
				dtoOferta.setIdUsuarioModificacion(rs.getInt("idUsuarioModificacion"));
				dtoOferta.setFechaModificacion(rs.getDate("FechaModificacion"));
				dtoOferta.setEstado(rs.getInt("Estado"));
				
				listOferta.add(dtoOferta);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return listOferta;
	}

	public boolean eliminar(String codigo) {
		boolean flag = true;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = 
				"UPDATE " + 
				"	oferta " +
				"SET " +
				"   estado = '0' " +
				"WHERE " +
				"	idOferta = " + codigo
			;
			
			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		return flag;
	}
}